package main

//
//import (
//	"context"
//	"errors"
//	"fmt"
//	"time"
//)
//
//func main() {
//	var ctx context.Context
//	ctx = context.Background()
//	messRegChk(ctx)
//	select {}
//}
//
//func MessInitReg01() error {
//	if time.Now().UnixNano()%2 == 0 {
//		return nil
//	} else {
//		return errors.New("Error! ")
//	}
//}
//
//func messRegChk(ctx context.Context) {
//	const (
//		minInterval   = 2 * time.Second
//		maxInterval   = 24 * time.Hour
//		resetInterval = 10 * time.Second
//	)
//	var newInterval time.Duration
//	var err error
//	newInterval = resetInterval
//	timer := time.NewTimer(resetInterval)
//	defer timer.Stop()
//	for {
//		select {
//		case <-ctx.Done():
//			return
//		case <-timer.C:
//			err = MessInitReg01()
//			if err == nil {
//				newInterval = newInterval * 2
//				if newInterval > maxInterval {
//					newInterval = resetInterval
//				}
//				fmt.Println("Registration sucessed, set interval to ", newInterval)
//			} else {
//				newInterval = newInterval / 2
//				if newInterval < minInterval {
//					newInterval = minInterval
//				}
//				fmt.Println("Registration failed, set interval to ", newInterval)
//			}
//			timer.Reset(newInterval)
//		}
//	}
//}
